#!/bin/bash

# 清理ESP-IDF安装环境的脚本
set -euo pipefail

# 定义常量（必须与安装脚本一致）
ESP_DIR="$HOME/esp"
GITEE_TOOLS_DIR="$ESP_DIR/esp-gitee-tools"
IDF_DIR="$ESP_DIR/esp-idf"
TOOLCHAIN_DIR="$HOME/.espressif"

# 显示警告信息
echo -e "\033[31m警告：此脚本将完全移除ESP-IDF开发环境\033[0m"
echo "将删除以下内容："
echo "1. ESP目录: $ESP_DIR"
echo "2. 工具链目录: $TOOLCHAIN_DIR"
echo "3. 从shell配置文件中移除环境变量设置"
echo ""

# 确认操作
read -p "确定要完全移除ESP-IDF环境吗？(y/N) " -n 1 -r
echo
if [[ ! $REPLY =~ ^[Yy]$ ]]; then
    echo "操作已取消"
    exit 0
fi

# 1. 移除ESP目录
echo ">>> 移除ESP目录..."
if [[ -d "$ESP_DIR" ]]; then
    echo "删除: $ESP_DIR"
    rm -rf "$ESP_DIR"
else
    echo "未找到: $ESP_DIR (可能已被删除)"
fi

# 2. 移除工具链目录
echo ">>> 移除工具链目录..."
if [[ -d "$TOOLCHAIN_DIR" ]]; then
    echo "删除: $TOOLCHAIN_DIR"
    rm -rf "$TOOLCHAIN_DIR"
else
    echo "未找到: $TOOLCHAIN_DIR (可能已被删除)"
fi

# 3. 从配置文件中移除环境变量设置
echo ">>> 清理配置文件..."
SHELL_CONFIGS=(
    "$HOME/.bashrc"
    "$HOME/.zshrc"
    "$HOME/.profile"
    "$HOME/.bash_profile"
)

# 查找并移除export.sh相关的行
for config in "${SHELL_CONFIGS[@]}"; do
    if [[ -f "$config" ]]; then
        # 检查是否有需要移除的行
        if grep -q "export.sh" "$config"; then
            echo "从 $config 中移除ESP-IDF环境设置"
            
            # 使用sed安全地移除相关行
            sed -i.bak '/esp-idf\/export\.sh/d' "$config"
            sed -i.bak '/ESP-IDF environment setup/d' "$config"
            
            # 移除备份文件
            rm -f "${config}.bak"
        else
            echo "$config 中没有找到ESP-IDF设置"
        fi
    fi
done

# 4. 移除可能存在的临时文件
echo ">>> 清理临时文件..."
rm -f "$HOME/.cache/idf_tools_versions" 2>/dev/null || true
rm -f "$HOME/.espressif/idf-env.json" 2>/dev/null || true

echo -e "\n\033[32m清理完成！\033[0m"
echo "所有ESP-IDF相关文件和环境设置已被移除"
echo "你可能需要重新打开终端或运行 'source ~/.bashrc' 使更改生效"
